home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- local pokus = getRestartCount()
- local updateCycles = 0
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.hlaskam = 0
- room.hlaskav = 0
- --TODO: allow to ask for music_volume
- local startVolume = optionsGetAsInt("volume_sound")
- room.rozbito = 0
-
- return function()
- updateCycles = updateCycles + 1
- if isReady(small) and isReady(big) and no_dialog() then
- if amp1:isTalking() or amp2:isTalking() or amp3:isTalking() then
- if room.hlaskam == 0 and random(1000) < 1 then
- room.hlaskam = 1
- addm(10, "ves-m-krab")
- elseif room.hlaskav == 0 and random(1000) < 2 then
- room.hlaskav = 1
- switch(random(2)){
- [0] = function()
- addv(10, "ves-v-veci")
- end,
- [1] = function()
- addv(10, "ves-v-vyp")
- end,
- }
- elseif startVolume > optionsGetAsInt("volume_sound") and optionsGetAsInt("volume_sound") < 16 then
- startVolume = 0
- addm(15, "ves-m-dik")
- addv(random(20) + 10, "ves-v-stejne")
- end
- elseif room.rozbito == 3 then
- room.rozbito = room.rozbito + 1
- addv(10, "ves-v-pokoj")
- elseif room.rozbito == 5 then
- addm(3, "ves-m-uz")
- room.rozbito = room.rozbito + 1
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_amp1()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- amp1.stav = 0
-
- return function()
- if amp1.stav == 1 and updateCycles == 2 and not amp1:isTalking() then
- amp1:talk("ves-ampliony", VOLUME_LOW, -1)
- end
- switch(amp1.stav){
- [0] = function()
- if updateCycles == hlava.zac2 then
- amp1.faze = 0
- amp1:talk("ves-ampliony", VOLUME_LOW, -1)
- amp1.stav = amp1.stav + 1
- end
- end,
- [1] = function()
- if amp1.dir == dir_down then
- amp1.stav = amp1.stav + 1
- amp1.afaze = 7
- elseif odd(game_getCycles()) then
- local anim_table = {
- [0] = function()
- amp1.afaze = amp1.afaze + 1
- end,
- [1] = function()
- amp1.afaze = amp1.afaze - 1
- end,
- [2] = function()
- amp1.afaze = amp1.afaze + 2
- end,
- [8] = function()
- amp1.afaze = amp1.afaze - 2
- end,
- [13] = function()
- amp1.faze = -1
- amp1.afaze = 0
- end,
- }
- anim_table[3] = anim_table[0]
- anim_table[4] = anim_table[0]
- anim_table[7] = anim_table[0]
- anim_table[12] = anim_table[0]
- anim_table[6] = anim_table[1]
- anim_table[9] = anim_table[1]
- anim_table[10] = anim_table[1]
- anim_table[5] = anim_table[2]
- anim_table[11] = anim_table[8]
- switch(amp1.faze)(anim_table)
-
- amp1.faze = amp1.faze + 1
- end
- end,
- [2] = function()
- if amp1.dir ~= dir_down then
- amp1:killSound()
- room:talk("sp-smrt", VOLUME_FULL)
- amp1.afaze = 9
- amp1.stav = amp1.stav + 1
- room.rozbito = room.rozbito + 1
- elseif odd(game_getCycles()) then
- amp1.afaze = 15 - amp1.afaze
- end
- end,
- }
-
- amp1:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_amp2()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- amp2.stav = 0
- amp2.afaze = 3
-
- return function()
- if amp2.stav == 1 and updateCycles == 2 + 3 and not amp2:isTalking() then
- amp2:talk("ves-ampliony", VOLUME_LOW, -1)
- end
- switch(amp2.stav){
- [0] = function()
- if updateCycles == hlava.zac2 + 3 then
- amp2.faze = 4
- amp2:talk("ves-ampliony", VOLUME_LOW, -1)
- amp2.stav = amp2.stav + 1
- end
- end,
- [1] = function()
- if amp2.dir == dir_down then
- amp2.stav = amp2.stav + 1
- amp2.afaze = 7
- elseif odd(game_getCycles()) then
- local anim_table = {
- [0] = function()
- amp2.afaze = amp2.afaze + 1
- end,
- [1] = function()
- amp2.afaze = amp2.afaze - 1
- end,
- [2] = function()
- amp2.afaze = amp2.afaze + 2
- end,
- [8] = function()
- amp2.afaze = amp2.afaze - 2
- end,
- [13] = function()
- amp2.faze = -1
- amp2.afaze = 0
- end,
- }
- anim_table[3] = anim_table[0]
- anim_table[4] = anim_table[0]
- anim_table[7] = anim_table[0]
- anim_table[12] = anim_table[0]
- anim_table[6] = anim_table[1]
- anim_table[9] = anim_table[1]
- anim_table[10] = anim_table[1]
- anim_table[5] = anim_table[2]
- anim_table[11] = anim_table[8]
- switch(amp2.faze)(anim_table)
-
- amp2.faze = amp2.faze + 1
- end
- end,
- [2] = function()
- if amp2.dir ~= dir_down then
- amp2:killSound()
- room:talk("sp-smrt", VOLUME_FULL)
- amp2.afaze = 9
- amp2.stav = amp2.stav + 1
- room.rozbito = room.rozbito + 1
- elseif odd(game_getCycles()) then
- amp2.afaze = 15 - amp2.afaze
- end
- end,
- }
-
- amp2:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_amp3()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- amp3.stav = 0
- amp3.afaze = 6
-
- return function()
- if amp3.stav == 1 and updateCycles == 2 + 5 and not amp3:isTalking() then
- amp3:talk("ves-ampliony", VOLUME_LOW, -1)
- end
- switch(amp3.stav){
- [0] = function()
- if updateCycles == hlava.zac2 + 5 then
- amp3.faze = 6
- amp3:talk("ves-ampliony", VOLUME_LOW, -1)
- amp3.stav = amp3.stav + 1
- end
- end,
- [1] = function()
- if amp3.dir == dir_down then
- amp3.stav = amp3.stav + 1
- amp3.afaze = 7
- elseif odd(game_getCycles()) then
- local anim_table = {
- [0] = function()
- amp3.afaze = amp3.afaze + 1
- end,
- [1] = function()
- amp3.afaze = amp3.afaze - 1
- end,
- [2] = function()
- amp3.afaze = amp3.afaze + 2
- end,
- [8] = function()
- amp3.afaze = amp3.afaze - 2
- end,
- [13] = function()
- amp3.faze = -1
- amp3.afaze = 0
- end,
- }
- anim_table[3] = anim_table[0]
- anim_table[4] = anim_table[0]
- anim_table[7] = anim_table[0]
- anim_table[12] = anim_table[0]
- anim_table[6] = anim_table[1]
- anim_table[9] = anim_table[1]
- anim_table[10] = anim_table[1]
- anim_table[5] = anim_table[2]
- anim_table[11] = anim_table[8]
- switch(amp3.faze)(anim_table)
-
- amp3.faze = amp3.faze + 1
- end
- end,
- [2] = function()
- if amp3.dir ~= dir_down then
- amp3:killSound()
- room:talk("sp-smrt", VOLUME_FULL)
- amp3.afaze = 9
- amp3.stav = amp3.stav + 1
- room.rozbito = room.rozbito + 1
- elseif odd(game_getCycles()) then
- amp3.afaze = 15 - amp3.afaze
- end
- end,
- }
-
- amp3:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_hlava()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- hlava.stav = 0
- hlava.zac1 = 30
- hlava.zac2 = 65
-
- return function()
- switch(hlava.stav){
- [0] = function()
- if updateCycles == hlava.zac1 then
- hlava.stav = hlava.stav + 1
- hlava:talk("ves-hs-hrajeme", VOLUME_FULL)
- end
- end,
- [1] = function()
- if hlava:isTalking() then
- switch(random(3)){
- [0] = function()
- hlava.afaze = 0
- end,
- [1] = function()
- hlava.afaze = 17
- end,
- [2] = function()
- hlava.afaze = 14
- end,
- }
- else
- hlava.stav = hlava.stav + 1
- hlava.afaze = 5
- end
- end,
- [2] = function()
- if updateCycles >= hlava.zac2 + 10 then
- hlava.stav = hlava.stav + 1
- end
- end,
- [3] = function()
- if room.rozbito < 3 then
- if odd(math.floor(game_getCycles() / 2)) then
- hlava.afaze = 10
- else
- hlava.afaze = 11
- end
- else
- hlava.afaze = 13
- hlava.stav = hlava.stav + 1
- end
- end,
- [51] = function()
- hlava:talk("ves-hs-papa")
- room.rozbito = room.rozbito + 1
- hlava.stav = 100
- end,
- [100] = function()
- if hlava:isTalking() then
- if odd(math.floor(game_getCycles() / 2)) then
- hlava.afaze = 4
- else
- hlava.afaze = 18
- end
- else
- room.rozbito = room.rozbito + 1
- hlava.afaze = 5
- hlava.stav = hlava.stav + 1
- end
- end,
- default = function()
- if hlava.stav >= 4 and hlava.stav <= 50 then
- hlava.stav = hlava.stav + 1
- end
- end,
- }
-
- hlava:updateAnim()
-
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_krabik()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- krabik.afaze = 1
-
- return function()
- if amp1:isTalking() or amp2:isTalking() or amp3:isTalking() or hlava:isTalking() then
- krabik.afaze = random(5)
- if krabik.afaze == 1 then
- krabik.afaze = 5
- end
- elseif random(20) == 0 then
- krabik.afaze = 1
- end
-
- krabik:updateAnim()
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_amp1()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_amp2()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_amp3()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_hlava()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_krabik()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-